package com.jlboot.app.admin.controller;

import com.jfinal.aop.Clear;
import com.jlboot.app.admin.base.BaseController;
import com.jlboot.core.ConfigUtil;
import com.jlboot.core.annotation.JlActivity;
import com.jlboot.core.annotation.JlCheckLogin;
import com.jlboot.core.consts.Consts;
import com.jlboot.core.form.FormData;

import com.jlboot.core.cache.SysConfigCache;
import com.jlboot.core.model.LoginUser;
import com.jlboot.core.util.LoginUtil;
import com.jlboot.model.po.sys.SysMenu;
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import lombok.extern.slf4j.Slf4j;

import java.awt.*;

/**
 * Created by 51594 on 2019/10/21.
 */
@Slf4j
@JlCheckLogin
public class IndexController extends BaseController {


    /**
     * 界面首页
     */
    @Clear
    public void index() {

        if(!LoginUtil.isLogin()){
            redirect(ConfigUtil.getWebAdminPath()+"/login");
            return;
        }

        String userId = LoginUtil.getLoginId();

        LoginUser adminLoginUser= LoginUtil.getLoginUser();

        //写user信息
        setAttr("form", FormData.n().addData("user", adminLoginUser));
//        //写R，可用于前端判断权限
//        setAttr("R", ValidateRole.n(""));
        //系统标题
        setAttr("sys_title", SysConfigCache.getConfigValue("sys_title"));
        /////////////////菜单////////////////////////////////

        StringBuilder roleCode= new StringBuilder();
        for (String s : LoginUtil.getRoleList()) {
            roleCode.append("|").append(s);
        }

        setAttr("menu_html", SysMenu.dao.getUserMenuHtml(roleCode.toString(), userId));
        /////////////////////////////////////////////////
        render("Index.html");
    }

    /**
     * 输出 验证码
     */
    @Clear
    public void ValidateCode() {
        try {

            // 三个参数分别为宽、高、位数
            SpecCaptcha specCaptcha = new SpecCaptcha(120, 40, 4);
            // 设置字体
            specCaptcha.setFont(new Font("Verdana", Font.PLAIN, 32));  // 有默认字体，可以不用设置
            // 设置类型，纯数字、纯字母、字母数字混合
            specCaptcha.setCharType(Captcha.TYPE_ONLY_NUMBER);
            //放入session中
            LoginUtil.setAnonTokenSessionValue(Consts.login_spec_captcha_code,specCaptcha.text());
            // 输出图片流
            specCaptcha.out(getResponse().getOutputStream());

            renderNull();
        } catch (Exception e) {
            log.error("生成验证码图片错误",e);
            renderNull();
        }
    }


    /**
     * 界面主页     *
     */
    @JlActivity(name = "界面主页")
    public void Main() {
        ////////////根据不同角色，不用同户显示不同的页面
        if (LoginUtil.hasAnyRole("sales")) {
            //renderTemplate();
            render("Main.html");
        }

        //renderTemplate();
        render("MainGuest.html");
    }

}